package com.happy016.context;

/**
 * IOC 与 DI 的理解
 * @author Linyb
 */
public class IocAndDI {

    //IOC 控制反转
    //DI  依赖注入

    //个人理解,这两个概念其实说的是同一个东西,只是对一个概念从不同角度的描述

    /* IOC 控制反转,准确说是一种设计思想
     * 我们把我们的创建的对象控制权交给容器来控制,而不是传统的在我们自己内部对象里面直接控制
     * 谁控制谁: 传统的我们自己new对象,是程序主动创建去依赖,IOC容器,顾名思义是IOC来统一管理对象(控制)
     * 反转:传统自己new对象主动去获取对象,可以理解为正转;反转,则是由IOC容器负责创建,以及依赖关系.
     *
     * 总结: IOC容器控制 IOC容器创建并依赖
     */


    /* DI 依赖注入
     * 简单粗暴的理解就是: 现有 对象A  对像B  其中对象B里面应用了对象A
     * 传统的做法: 对象B里面 我们需要手动的new对象A,
     * 现在的做法: 对象B里面需要依赖的对象A,交由容器来注入.
     *
     * 谁依赖于谁:应用程序依赖于IOC容器
     * 谁注入于谁:IOC容器注入应用程序以及之间的依赖
     * 注入了什么:注入某个对象需要的外部资源(B里面需要A)
     *
     * 总结:依赖IOC   注入
     */

    // IOC 容器最顶层的接口 BeanFactory  我们一般使用ApplicationContext作为IOC容器
}
